The 16-Bit language tools consist of an assembler (pic30-as.exe) and a linker (pic30-ld.exe). These tools are sometimes referred to as the "ASM30 Suite". The user's guide describes additional utilities that are not supported by the MPLAB IDE and therefore are not supplied in this release.
Section 7 of this README contains documentation updates that have not yet made it to the online or printed manuals.
With the exceptions noted below, the 16-Bit tools are written and distributed under the GNU General Public License (GPL) which means that its source code is freely distributed and available to the public.
The source for the tools under the GNU GPL may be downloaded separately from the Microchip WWW web page. You may read the GNU GPL in the file named COPYING located the top level of your install directory. A general discussion of principles underlying the GPL may be found at www.gnu.org/copyleft.
Exceptions to the GNU GPL:
Support code provided for the header files, linker scripts, and runtime libraries are also exceptions to, and therefore not covered under, the GPL.
The following dsPIC30 devices are supported:
30F1010 30F2010 30F3010 30F4011 30F5011 30F6010
30F2011 30F3011 30F4012 30F5013 30F6010A
30F2012 30F3012 30F4013 30F5015 30F6011
30F2020 30F3013 30F5016 30F6011A
30F2023 30F3014 30F6012
30F6012A
30F6013
30F6013A
30F6014
30F6014A
30F6015
The following PIC24 devices are supported:
24FJ32GA002 24FJ64GA002 24FJ96GA006 24FJ128GA006
24FJ32GA004 24FJ64GA004 24FJ96GA008 24FJ128GA008
24FJ64GA006 24FJ96GA010 24FJ128GA010
24FJ64GA008
24FJ64GA010
24HJ64GP206 24HJ128GP206 24HJ256GP206
24HJ64GP210 24HJ128GP210 24HJ256GP210
24HJ64GP506 24HJ128GP306 24HJ256GP610
24HJ64GP510 24HJ128GP310
24HJ128GP506
24HJ128GP510
The following dsPIC33 devices are supported:
33FJ64GP206 33FJ128GP206 33FJ256GP506
33FJ64GP306 33FJ128GP306 33FJ256GP510
33FJ64GP310 33FJ128GP310 33FJ256GP710
33FJ64GP706 33FJ128GP706
33FJ64GP708 33FJ128GP708
33FJ64GP710 33FJ128GP710
33FJ64MC506 33FJ128MC506 33FJ256MC510
33FJ64MC508 33FJ128MC510 33FJ256MC710
33FJ64MC510 33FJ128MC706
33FJ64MC706 33FJ128MC708
33FJ64MC710 33FJ128MC710
The following 'virtual' devices are supported:
PIC24 and dsPIC33 devices do not currently have peripheral library support.
The dsPIC language tools are installed with the MPLAB IDE installer.
Users migrating from versions prior to v2.03 may experience linker failures due to undefined symbols if they have referred to the now obsoleted symbols __dsPIC30COFF or __dsPIC30ELF or have incorporated crt0.s, crt1.s, or libm.a into their projects by copying them from the default install location. Changing the symbol names or incorporating the new version of the mentioned files will solve this issue (preferably by referring to them, rather than copying them into your project directory). Please see documentation updates for more details.
Users of previous versions of MPLAB C30 (version 1.2x and earlier) may wish to read the v1.3x migration document which may be found on MPLAB C30 download area of the Microchip web site.
A single enhancements listed in the 'Fixed Issues' section.
Several enhancements are listed in the 'Fixed Issues' section.
This release provides support for a number of new devices.
This release provides support for new configuration fuses related CodeGuard™ Advanced on-chip Code Protection features.
There are some further enhancements listed in the 'Fixed Issues' section.
This release provides support for a number of new devices. Additionally there are some further enhancements listed in the 'Fixed Issues' section.
This release provides support for a number of new devices. Additionally there are some further enhancements listed in the 'Fixed Issues' section.
This release provides a number of enhancements to make accessing the unique features of the dsPIC easier. These are summarized below, with more information available in the accompanying documentation.
Some highlights:
Certain errors or warnings may be generated to indicate that certain features are not suitable for the particular selected device.
The manuals have been updated to document this support.
Additionally a new builtin operator, dmaoffset(), can be used to discover the correct offset for the section in order to properly configure the DMA peripheral.
The manuals have been updated to document this support.
Certain errors or warnings may be generated to indicate that an invalid mix of object files has been selected to create an executable. It may be that SFRs or IVT table entries have moved or changed function between the devices.
The manuals have been updated to document this support.
pic30-bin2hex object_file -a
For a summary of the hex file contents, add the -v option:
pic30-bin2hex object_file -va
Similarily for the Alternate Vector Tables.
Tables 8-1 and 8-2 discuss constraint letters and modifiers that may be used to identify various entities with which it is acceptable to replace a particular operand, such as %0 in:
asm("mov %1, %0" : "r"(foo) : "r"(bar));
This example should indicate that the value stored in foo
should be moved into bar, and indeed the example performs
this task unless foo or bar are larger than an int.
By default, %0 represents the first register for the operand (0). To access the second, third, or fourth register one can use a modifier letter in the template itself:
template description
-------- ------------------------------------------
%0 first register for the identified operand
%d0 second register for the identified operand
%t0 third register for the identified operand
%q0 fourth register for the identified operand
This was incorrectly named ADRERR.
The GNU assembler accepts an optional subsection number, but the MPLAB ASM30 does not. For this reason, the following produced a unhelpful error message:
.data 0x32
Within a single assembly file, a section should not be specified to start at more than one address.
.section foo, data, address(0x900) ; .... .text ; .... .section foo, data ; acceptable .section foo, data, address(0x900) ; acceptable .section foo, data, address(0xA00) ; error - addresses do not match
Address definitions for generic peripheral blocks such as UART1, UART2 were missing from dsPIC33F and PIC24 linker scripts.
This new feature is more fully described in the documentation updates section.
The assembler will now generate __C30COFF or __C30ELF as a generic symbol that may be used to identify the generic target.
This new feature is more fully described in the documentation updates section.
A clearer error message will help the customer determine the cause for certain weird link errors dealing with conflicting implied attributes
Custom linker scripts can now map linker-generated section .dinit to any arbitrary output section.
INT1EP and INT2EP are missing.
An explicit mapping of the DMA memory in a linker script will cause dmaoffset to fail.
Since v1.30, the .fixed directive rounds to nearest, instead of toward zero, to minimize quantization error.
Under certain conditions, the .fixed directive would store data in the bits 16-23 of a program word. This is incorrect and has been fixed.
Same as 27252.
Although the standard linker scripts don't support a code section at address(0), the assembler should allow it, and now it does.
A new section (10.13) has been added to the assembler manual (DS51317).
An explanation of C30-specific aspects of hex files (including byte vs. PC addressing) was added.
The following example is not encoded correctly:
.equiv var1,root+1
.equiv var2,var1
.word var1 ; encodes root+1
.word var2 ; encodes root
This can happen when the value specified in .equiv is the name of an SFR high byte such as _LATBH, which is defined in the processor include files as an .equiv. The workaround in this case would be to refer to the base register itself, i.e. _LATB+1
Bit ENHBUF should not be present for PIC24H or dsPIC33F devices. This affects the C header and assembler include files
Addresses that conflict the .text section can be accommodated by modifying the linker script. To modify the linker script, simply remove the .text section from the list of input sections for the output section named .text. For example, it may be modified to read:
/*
** User Code and Library Code
*/
.text __CODE_BASE :
{
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
/* *(.text); */
} >program
This will cause the linker to place the .text input
sections after satisfying all of the absolute section
requirements.If a linker script is modified to place the .text section from one object file before all the others, multiple definition errors can result. When this occurs the linker acts as if the section was included twice. The workaround is to specify a full pathname, or *, before the object file name:
/*
** User Code and Library Code
*/
.text __CODE_BASE :
{
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
myfile.o(.text); /* this form causes error */
*myfile.o(.text); /* this form works OK */
*(.text);
} >program
The tools do not recognize the correct spelling of interrupt function _SPI1Interrupt. In particular, the linker will fail to populate the interrupt vector tables with the function address. The workaround is to use the incorrect spelling _SPI1TInterrupt.
This installation makes no changes to the way environment variables have been updated previously.
Modified environment variables are identified as part of the installation procedure and are documented in the manuals.
Microchip provides online support via our web site at www.microchip.com. This web site is used as a means to make files and information easily available to customers. Accessible by using your favorite Internet browser, the web site contains the following information:
Microchip's customer notification service helps keep customers current on Microchip products. Subscribers will receive e-mail notification whenever there are changes, updates, revisions or errata related to a specified product family or development tool of interest.
To register, access the Microchip web site at www.microchip.com, click on Customer Change Notification and follow the registration instructions.
The Development Systems product group categories are:
Users of Microchip products can receive assistance through several channels:
Customers should contact their distributor, representative or field application engineer (FAE) for support. Local sales offices are also available to help customers. A listing of sales offices and locations is available on our website.
Technical support is available through the web site at: http://support.microchip.com